A SQL Server installation is referred to as an
instance. Up to and including SQL Server 7.0, only one installation of
SQL Server was possible on a server, but that restriction didn’t suit a
number of deployment scenarios that customers required, including
high-availability and consolidation.
With
the release of SQL Server 2000, multiple installations of SQL Server
were possible on a single server and were known as SQL Server
instances. SQL Server 2008 continues with this model and with very few
changes.
A default instance
has much the same profile that SQL Server installations have had in
past; you install SQL Server and then connect using the computer name
of the server. Your Windows Server can only have one computer name, so
you can only use it to connect to one SQL Server instance. This is
called the default instance.
If
you install additional instances of SQL Server, these are referred to
as named instances. You connect to them using the
<computername>\<instancename> format. For example, if you
have a server named PLUTO and you install a named instance named SQL1,
you would connect to that instance using PLUTO\SQL1. If you installed
another named instance called SQL2, you would connect using PLUTO\
SQL2. If you had a default instance installed, you would connect using
PLUTO.
Each
instance is completely independent of any other instance and has its
own set of services, databases, and configuration settings. All the
components of a single instance are managed together, and service packs
and patches are applied to all components within an instance.
During
the installation process you have to specify a unique instance ID,
which is used to define the directory structure, registry structure,
and service names for that instance. This is new in SQL Server 2008. By
default, the instance name that you specified is used as the instance
ID. For the default instance, MSSQLSERVER is used as the instance ID.
In Figure 1
you can see the installation screen for a default instance showing the
instance ID. You can also see that two named instances are already
installed: PLUTO\SQL1 and PLUTO\SQL2. You don’t have to have a default
instance installed to install or use named instances.
If you take a look at the directory structure after the installation in Figure 2,
you’ll see separate directories for each instance as well as each
installation of Analysis Services and Reporting Services. There are
also three directories called 80, 90, and 100, which contain components
that are shared across all instances such as the Management Tools. 80
and 90 hold SQL Server 2000 and SQL Server 2005 components for backward
compatibility, and 100 contains the SQL Server 2008 shared components,
including SQL Server Integration Services if it’s installed. SQL Server
Integration Services is not instance aware, so you can only have one
installation on a server.
The
default instance will listen on TCP port 1433 by default, and named
instances use dynamic port allocation. The SQL Browser Service listens
on UDP port 1434 and is responsible for determining the correct port
when you try to connect. If the SQL Browser Service isn’t running, you
will need to specify a unique TCP port for each instance to listen on
using SQL Server Configuration Manager, which is detailed in the next
section.
Once you
know which port your instance listens on, you can specify it in your
connection string. For example, if you configured PLUTO\SQL1 to listen
on port 53000 you would connect using PLUTO\SQL1:53000. You don’t
normally have to do this because the SQL Browser Service is installed
and runs automatically, but it is sometimes disabled to tighten
security.